#pragma once
#include "Strategy.hpp"

class FlyWithWings :public FlyBehavior
{
public:
  void Fly()
  {
    std::cout << "Fly with wings!" << std::endl;
  }  
};

class FlyNoWay :public FlyBehavior
{
public:
  void Fly()
  {
    std::cout << "Cant't fly!" << std::endl;
  }
};

class OnlyQuack :public QuackBehavior
{
public:
  void Quack()
  {
    std::cout << "真鸭子嘎嘎叫!" << std::endl;
  }
};

class Squack :public QuackBehavior
{
public:
  void Quack()
  {
    std::cout << "橡皮鸭吱吱叫!" << std::endl;
  }
};

class MuteQuack :public QuackBehavior
{
  public:
  void Quack()
  {
    std::cout << "什么都不做，不会叫!" << std::endl;
  }
};

class FlyRocketPowered :public QuackBehavior
{
public:
  void Quack()
  {
    std::cout << "Fly with rocket powered!" << std::endl;
  }
};

class SwimNoWay :public SwimBehavior
{
public:
    void Swim()
    {
      std::cout << "旱鸭子，连游泳也不会!" << std::endl;
    }
};

class SwimFast :public SwimBehavior
{
  public:
    void  Swim()
    {
      std::cout << "游泳健将，水里打滚!" << std::endl;
    }
};
